package com.snsoft.aspect;

import java.sql.SQLException;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * @author 慎伟康
 * 
 * @date 2017年12月21日 上午9:16:14
 * 
 * @Description TODO
 *    日志切面
 *    
 * @Aspect
 *    声明为一个切面
 */
@Aspect
public class LogAspect {

	/** 记录日志的对象  */
	private final static Logger logger = LoggerFactory.getLogger(LogAspect.class);
	
	/**
	 * 切面的行为方法，此方法用于记录异常日志。
	 * 
	 * @AfterReturning
	 *     通知方法会在目标方法返回后调用
	 * 
	 * @see
	 *     execution(* com.snsoft.web.controller.UserController.handleUserNotFoundException(Exception)) && args(e)
	 *     定义切点，详见Spring In Action4的4.2.1和4.3.3
	 * 
	 * @param e
	 *     这个异常参数会从目标方法中传递过来
	 */
	@AfterReturning("execution(* com.snsoft.web.controller.UserController.handlePasswordErrorException(Exception)) && args(e)" 
						+ "|| execution(* com.snsoft.web.controller.WideExceptionHandler.handleUserNotFoundException(Exception)) && args(e)"
						+ "|| execution(* com.snsoft.web.controller.UserController.handleUnsupportedEncodingException(Exception)) && args(e)"
						+ "|| execution(* com.snsoft.web.controller.WideExceptionHandler.handleSQLException(Exception)) && args(e)")
	public void exceptionLog(Exception e){
		if(e instanceof SQLException){
			logger.error("严重系统异常-->" + e);
		}else{
			logger.warn("出现异常-->" + e);
		}
	}
	
	public void loginLog(){
		
	}
}
